package br.com.djiadreams.funcoes;

import android.content.Context;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.widget.Toast;

public class GerenciadorDeFuncoes implements IGerenciador {

	private Sinal sinal;
	private Bateria bateria;
	private Local local;
	private TelephonyManager telManager;
	private String operadora;

	public GerenciadorDeFuncoes(Context c) {
		try {
			sinal = new Sinal();
			local = new Local(c);
			bateria = new Bateria(c);
			telManager = (TelephonyManager) c
					.getSystemService(Context.TELEPHONY_SERVICE);
			operadora = telManager.getSimOperatorName();
		} catch (Exception e) {
			Toast.makeText(c, "Erro ao iniciar gerenciador", Toast.LENGTH_SHORT)
					.show();
		}
	}

	@Override
	public void atualizar() {
		// TODO Auto-generated method stub
		try {
		bateria.atualizaBateria();
		local.atualizaLocal();
			telManager
					.listen(sinal, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
		} catch (Exception e) {
			Log.e("Atualizar", "Não foi possível atualizar as informações do gerenciador");
		}
	}

	@Override
	public double getLatitude() {
		// TODO Auto-generated method stub
		return local.getLatitude();
	}

	@Override
	public double getLongitude() {
		// TODO Auto-generated method stub
		return local.getLongitude();
	}

	@Override
	public int getBateria() {
		// TODO Auto-generated method stub
		return bateria.getNivel();
	}

	@Override
	public String getOperadora() {
		// TODO Auto-generated method stub
		return operadora;
	}


	@Override
	public int getSinal() {
		// TODO Auto-generated method stub
		return sinal.getAsu();
	}

	@Override
	public void encerrarAtualizacao() {
		// TODO Auto-generated method stub
		telManager.listen(sinal, PhoneStateListener.LISTEN_NONE);
	}

}
